package com.fejal.dao;


import java.util.List;
import com.fejal.bean.Mensalidade;


public class MensalidadeDAOHibernate implements MensalidadeDAO {

	HibernateDAOFactory hibernateDAOFactory = null;
	HibernateDAO<Mensalidade> hibernateDAO = null;

	public MensalidadeDAOHibernate() {
		hibernateDAOFactory = new HibernateDAOFactory();
		hibernateDAO = hibernateDAOFactory.getMensalidadeDao();
	}

	@Override
	public boolean inserir(Mensalidade mensalidade) throws Exception {

		boolean ok = false;
		
		try {
			hibernateDAO.add(mensalidade);
			ok = true;

		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 

		return ok;
	}

	@Override
	public boolean alterar(Mensalidade mensalidade) throws Exception {

		boolean ok = false;
		
		try {
			hibernateDAO.update(mensalidade);
			ok = true;

		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 

		return ok;
	}

	@Override
	public boolean excluir(Mensalidade mensalidade) throws Exception {

		boolean ok = false;

		try {
			hibernateDAO.remove(mensalidade);
			ok = true;

		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 
		return ok;
	}

	@SuppressWarnings({"unchecked","rawtypes"})
	@Override
	public List<Mensalidade> getSelecionar(String servico, String curso) {

		String 	sql = "FROM Mensalidade as mensalidade "+ 
					  "WHERE mensalidade.servico.descricao like '"+servico+"%' " +
					  "  and mensalidade.curso.descricao like '"+curso+"%' " ;
	    
	    List lista = hibernateDAO.getSession().createQuery(sql).list();
		return lista;
	}	

	@SuppressWarnings({"unchecked","rawtypes"})
	@Override
	public List<Mensalidade> getSelecionar(int codigoCurso) {

		String 	sql = "FROM Mensalidade as mensalidade "+ 
					  "WHERE mensalidade.curso.codigoCurso = "+codigoCurso+" " ;

	    List lista = hibernateDAO.getSession().createQuery(sql).list();
		return lista;
	}

	@Override
	public Mensalidade getMensalidade(int codigoMensalidade) {
		Mensalidade mensalidade = hibernateDAO.get(codigoMensalidade);
		return mensalidade;
	}

	@Override
	public List<Mensalidade> getListTodos() {
		
		List<Mensalidade> list = hibernateDAO.listAll();
		return list;
	}

	@SuppressWarnings("unchecked")
	@Override
	public boolean isExiste(Mensalidade mensalidade) {
		// SQL para verificar se a Mensalidade existe
		String 	sql = "FROM Mensalidade " +
				      "WHERE codigoMensalidade = "+mensalidade.getCodigoMensalidade();

		List<Mensalidade> lista = hibernateDAO.getSession().createQuery(sql).list();
		if(lista.size()<1){
			return false;
		} else {
			return true;
		}
	}



}
